﻿package com.tangrong.filesystem;


import com.tangrong.filesystem.observer.Observable;
import com.tangrong.filesystem.observer.Observer;
import com.tangrong.filesystem.visitor.Visitor;

public class Link extends File implements  Observer{

	private File linkedNode;
	
	public Link(File linkedNode,String name){
		super(name);
		this.linkedNode = linkedNode;
	}
	
	public File getLinkedNode() {
		return linkedNode;
	}

	public void setLinkedNode(File linkedNode) {
		this.linkedNode = linkedNode;
	}
	
	@Override
	public void accept(Visitor v) {
		this.linkedNode.accept(v);
	}

	/*
	 * (non-Javadoc)
	 * @see com.tangrong.filesystem.Node#register(com.tangrong.filesystem.Node)
	 * 向文件（夹）中添加子文件（夹）
	 */
	@Override
	public void addFile(File node) {
		this.linkedNode.addFile(node);
	}

	/*
	 * (non-Javadoc)
	 * @see com.tangrong.filesystem.Node#unregister(com.tangrong.filesystem.Node)
	 * 从文件（夹）中 删除子文件（夹）
	 */
	@Override
	public void removeFile(File node) {
		this.linkedNode.removeFile(node);
	}
	

	@Override
	public void update(Observable observable, Object arg) {
		System.out.print(arg);
		System.out.println(", so " + this.name + " link deleted");
	}

	@Override
	public void doSomething() {
		System.out.println("just delete myself: " + this.name);
	}
}
